home *** CD-ROM | disk | FTP | other *** search
/ MacHack 2000 / MacHack 2000.toast / pc / The Hacks / Genie / Projects / Pedestal / Source / Sources / Xtep / XObject.cc < prev   
Encoding:
C/C++ Source or Header  |  2000-06-24  |  761 b   |  50 lines

  1. /* XObject.cpp */
  2.  
  3. #include "XObject.hh"
  4. #include "XAutoReleasePool.hh"
  5.  
  6. XAutoReleasePool XObject::sDefaultPool;
  7. XAutoReleasePool *XObject::sAutoReleasePool = &XObject::sDefaultPool;
  8.  
  9. XObject::XObject()
  10. : retainCount(1), autoReleaseFlag(false)
  11. {
  12. }
  13.  
  14. XObject *
  15. XObject::retain()
  16. {
  17.     retainCount++;
  18.     return this;
  19. }
  20.  
  21. XObject *
  22. XObject::release()
  23. {
  24.     if (--retainCount > 0 || autoReleaseFlag)
  25.         return this;
  26.     delete this;
  27.     return NULL;
  28. }
  29.  
  30. XObject *
  31. XObject::autorelease()
  32. {
  33.     //autoReleaseFlag = true;
  34.     AutoReleasePool().Add(this);
  35.     retainCount--;
  36.     return this;
  37. }
  38.  
  39. XAutoReleasePool &
  40. XObject::AutoReleasePool()
  41. {
  42.     return *sAutoReleasePool;
  43. }
  44.  
  45. void
  46. XObject::SetAutoReleasePool(XAutoReleasePool *inPool)
  47. {
  48.     sAutoReleasePool = (inPool != NULL) ? inPool : &sDefaultPool;
  49. }
  50.